<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:pe="http://primefaces.org/ui/extensions"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    <ui:composition template="/templates/layout.xhtml">
        <ui:define name="content">
            <h:form id="formId">
                <p:growl autoUpdate="true" sticky="true" life="10000" showDetail="true" />
                <p:dataTable id="riskView" lazy="true"
                             var="items" value="#{riskListBean.lazyRiskDataModel}" 
                             rows="30" rowKey="#{items.dataId}" rowIndexVar="no"
                             scrollable="true" scrollWidth="100%" scrollHeight="50%" 
                             paginator="true" paginatorPosition="bottom" 
                             paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
                             selectionMode="single" selection="#{riskListBean.selectedRisk}" 
                             emptyMessage="ไม่พบข้อมูลที่ค้นหา" 
                             style="text-align: left; font-size: small;" styleClass="borderGrid">

                    <p:ajax event="rowSelect" listener="#{riskListBean.onRowSelect}" 
                            update="@form" oncomplete="riskDialog.show();buiLayout.show();" />

                    <f:facet name="header" >
                        <p:outputLabel for="calFrom" value="เริ่มจากวันที่ : " />
                        <p:calendar id="calFrom" 
                                    value="#{riskListBean.selectedDateTimeFrom}" 
                                    maxdate="#{riskListBean.maxDate}"
                                    mindate="#{riskListBean.fromMinDate}"
                                    readonlyInput="true"
                                    pattern="dd/MM/yyyy" 
                                    showOn="button" 
                                    effectDuration="1"
                                    styleClass="calendarFilter">
                            <p:ajax event="dateSelect"
                                    update="calFrom,calTo,riskView" 
                                    listener="#{riskListBean.handleDateSelectFrom}"/>
                        </p:calendar>

                        <p:spacer width="20px"/>

                        <p:outputLabel for="calTo" value="จนถึงวันที่ : " />
                        <p:calendar id="calTo" 
                                    value="#{riskListBean.selectedDateTimeTo}" 
                                    maxdate="#{riskListBean.maxDate}"
                                    mindate="#{riskListBean.toMinDate}"
                                    readonlyInput="true"
                                    pattern="dd/MM/yyyy" 
                                    showOn="button" 
                                    effectDuration="1"
                                    styleClass="calendarFilter">
                            <p:ajax event="dateSelect" 
                                    update="calFrom,calTo,riskView" 
                                    listener="#{riskListBean.handleDateSelectTo}"/>
                        </p:calendar>

                        <p:spacer width="20px"/>

                        <h:commandLink>
                            <p:graphicImage value="/resources/images/excel.png" />
                            <p:dataExporter type="xls" target="riskView" fileName="risk" />
                        </h:commandLink>
                    </f:facet>

                    <p:column headerText="#" id="noId" exportable="false">
                        <h:outputText value="#{no+1}"/>
                    </p:column>
                    <p:column sortBy="#{items.dataAccidentDatetime}" style="text-align: center">
                        <f:facet name="header">
                            <h:outputText value="วันเวลาที่เกิดเหตุ"/>
                        </f:facet>
                        <h:outputText value="#{items.dataAccidentDatetime}">
                            <f:convertDateTime type="date" locale="th_TH" pattern="dd/MM/yyyy HH:mm"/>
                        </h:outputText>
                    </p:column>
                    <p:column filterBy="#{items.workgroup.workgroupName}" 
                              sortBy="#{items.workgroup.workgroupName}">
                        <f:facet name="header">
                            <h:outputText value="หน่วยงานที่เกิดเหตุ"/>
                        </f:facet>
                        <h:outputText value="#{items.workgroup.workgroupName}"/>
                    </p:column>
                    <p:column filterBy="#{items.workgroupConnected.workgroupName}" 
                              sortBy="#{items.workgroupConnected.workgroupName}">
                        <f:facet name="header">
                            <h:outputText value="หน่วยงานที่เกี่ยวข้องกับเหตุการณ์"/>
                        </f:facet>
                        <h:outputText value="#{items.workgroupConnected.workgroupName}"/>
                    </p:column>
                    <p:column filterBy="#{items.category.categoryName}" 
                              sortBy="#{items.category.categoryName}">
                        <f:facet name="header">
                            <h:outputText value="ประเภทของอุบัติการณ์ความเสี่ยง"/>
                        </f:facet>
                        <h:outputText value="#{items.category.categoryName}"/>
                    </p:column>
                    <p:column filterBy="#{items.mainEvent.mainEventName}" 
                              sortBy="#{items.mainEvent.mainEventName}">
                        <f:facet name="header">
                            <h:outputText value="กลุ่มอุบัติการณ์ความเสี่ยงหลัก"/>
                        </f:facet>
                        <h:outputText value="#{items.mainEvent.mainEventName}"/>
                    </p:column>
                    <p:column filterBy="#{items.subEvent.subEventName}" 
                              sortBy="#{items.subEvent.subEventName}">
                        <f:facet name="header">
                            <h:outputText value="อุบัติการณ์ความเสี่ยงที่พบ"/>
                        </f:facet>
                        <h:outputText value="#{items.subEvent.subEventName}"/>
                    </p:column>
                    <p:column filterBy="#{items.mainCause.mainCauseName}" 
                              sortBy="#{items.mainCause.mainCauseName}">
                        <f:facet name="header">
                            <h:outputText value="สาเหตุหลัก"/>
                        </f:facet>
                        <h:outputText value="#{items.mainCause.mainCauseName}"/>
                    </p:column>
                    <p:column filterBy="#{items.subCause.subCauseName}" 
                              sortBy="#{items.subCause.subCauseName}">
                        <f:facet name="header">
                            <h:outputText value="สาเหตุรอง"/>
                        </f:facet>
                        <h:outputText value="#{items.subCause.subCauseName}"/>
                    </p:column>
                    <p:column filterBy="#{items.severityLevelDetail.severityLevel}"
                              sortBy="#{items.severityLevelDetail.severityLevel}"
                              style="text-align: center">
                        <f:facet name="header">
                            <h:outputText value="ระดับ"/>
                        </f:facet>
                        <h:outputText value="#{items.severityLevelDetail.severityLevel.severityLevelAbbreviation}"/>
                    </p:column>
                    <p:column headerText="สถานที่เกิดเหตุ" rendered="false">
                        <h:outputText value="#{items.dataLocate}"/>
                    </p:column>
                    <p:column headerText="เหตุการณ์" rendered="false">
                        <h:outputText value="#{items.dataEventDetails}"/>
                    </p:column>
                    <p:column headerText="การแก้ไขเบื้องต้น" rendered="false">
                        <h:outputText value="#{items.dataPreliminaryResolve}"/>
                    </p:column>
                    <p:column headerText="Lv.1" exportable="false"
                              sortBy="#{items.profileReviewLevel1}"
                              style="text-align: center">
                        <p:graphicImage value="/resources/images/ico-true.png" rendered="#{not empty items.profileReviewLevel1}"/>
                        <p:graphicImage value="/resources/images/ico-false.png" rendered="#{empty items.profileReviewLevel1}"/>
                    </p:column>
                    <p:column headerText="Lv.2" exportable="false"
                              sortBy="#{items.profileReviewLevel2}"
                              style="text-align: center">
                        <p:graphicImage value="/resources/images/ico-true.png" rendered="#{not empty items.profileReviewLevel2}"/>
                        <p:graphicImage value="/resources/images/ico-false.png" rendered="#{empty items.profileReviewLevel2}"/>
                    </p:column>
                    <p:column headerText="Lv.3" exportable="false"
                              sortBy="#{items.profileReviewLevel3}"
                              style="text-align: center">
                        <p:graphicImage value="/resources/images/ico-true.png" rendered="#{not empty items.profileReviewLevel3}"/>
                        <p:graphicImage value="/resources/images/ico-false.png" rendered="#{empty items.profileReviewLevel3}"/>
                    </p:column>
                    <p:column headerText="CQI" exportable="false" style="text-align: center" rendered="false">
                        <p:graphicImage value="/resources/images/ico-word.png" rendered="#{not empty items.dataCQI}"/>
                        <p:graphicImage value="/resources/images/ico-no.png" rendered="#{empty items.dataCQI}"/>
                    </p:column>
                </p:dataTable>

                <p:dialog header="รายละเอียดของข้อมูลความเสี่ยง" widgetVar="riskDialog" resizable="false"
                          draggable="false" onHide="buiLayout.hide();">

                    <p:commandButton value="พิมพ์รายงาน" icon="ui-icon-print" type="button" style="width: 150px">
                        <p:printer target="detail"/>
                    </p:commandButton>

                    <p:panelGrid id="detail" style="width: 1000px;margin-top: 5px" styleClass="borderGrid">
                        <p:row>
                            <p:column style="text-align: right;">ผู้ที่บันทึก :</p:column>
                            <p:column style="text-align: left;">
                                <h:outputText value="#{riskListBean.selectedRisk.profileCreate.opduser.name}"/>
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column style="text-align: right; width: 25%">วันเวลาที่บันทึก :</p:column>
                            <p:column style="text-align: left; width: 75%">
                                <h:outputText value="#{riskListBean.selectedRisk.dataCreateDatetime}">
                                    <f:convertDateTime type="date" locale="th_TH" pattern="dd/MM/yyyy HH:mm"/>
                                </h:outputText>
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column style="text-align: right; width: 25%">หน่วยงานที่เกิด :</p:column>
                            <p:column style="text-align: left; width: 75%">
                                <h:outputText value="#{riskListBean.selectedRisk.workgroup.workgroupName}"/>
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column style="text-align: right;">หน่วยงานที่เกี่ยวข้องกับเหตุการณ์ :</p:column>
                            <p:column style="text-align: left;">
                                <h:outputText value="#{riskListBean.selectedRisk.workgroupConnected.workgroupName}"/>
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column style="text-align: right;">ประเภทของอุบัติการณ์ความเสี่ยง :</p:column>
                            <p:column style="text-align: left;">
                                <h:outputText value="#{riskListBean.selectedRisk.category.categoryName}"/>
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column style="text-align: right;">กลุ่มอุบัติการณ์ความเสี่ยงหลัก :</p:column>
                            <p:column style="text-align: left;">
                                <h:outputText value="#{riskListBean.selectedRisk.mainEvent.mainEventName}"/>
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column style="text-align: right;">อุบัติการณ์ความเสี่ยงที่พบ :</p:column>
                            <p:column style="text-align: left;">
                                <h:outputText value="#{riskListBean.selectedRisk.subEvent.subEventName}"/>
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column style="text-align: right;">ผู้ได้รับผลกระทบ :</p:column>
                            <p:column style="text-align: left;">
                                <ui:repeat value="#{riskListBean.selectedRisk.personImpactedList}" var="impact">
                                    <h:outputText value="#{impact.personImpactedName}, "/>
                                </ui:repeat>
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column style="text-align: right;">ผู้ป่วยที่ได้รับผลกระทบ :</p:column>
                            <p:column style="text-align: left;">
                                <ui:repeat var="patient" value="#{riskListBean.selectedRisk.patient}">
                                    <h:outputText value="HN :#{patient.hn} ชื่อ :#{patient.pname}#{patient.fname} #{patient.lname}"/>
                                </ui:repeat>
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column style="text-align: right;">วันเวลาที่เกิดเหตุ :</p:column>
                            <p:column style="text-align: left;">
                                <h:outputText value="#{riskListBean.selectedRisk.dataAccidentDatetime}">
                                    <f:convertDateTime type="date" locale="th_TH" pattern="dd/MM/yyyy HH:mm"/>
                                </h:outputText>
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column style="text-align: right;">สถานที่เกิดเหตุ :</p:column>
                            <p:column style="text-align: left;">
                                <h:outputText value="#{riskListBean.selectedRisk.dataLocate}"/>
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column style="text-align: right;">เหตุการณ์ :</p:column>
                            <p:column style="text-align: left;">
                                <h:outputText value="#{riskListBean.selectedRisk.dataEventDetails}"/>
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column style="text-align: right;">การแก้ไขเบื้องต้น :</p:column>
                            <p:column style="text-align: left;">
                                <h:outputText value="#{riskListBean.selectedRisk.dataPreliminaryResolve}"/>
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column style="text-align: right;">ระดับความรุนแรง :</p:column>
                            <p:column style="text-align: left;">
                                <h:outputText value="#{riskListBean.selectedRisk.severityLevelDetail.severityLevel.severityLevelName}"/>
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column style="text-align: right;">คำอธิบาย :</p:column>
                            <p:column style="text-align: left;">
                                <h:outputText value=""/>
                                <h:outputLabel value="#{riskListBean.selectedRisk.severityLevelDetail.slDetailExplanation}" />
                            </p:column>
                        </p:row>

                        <p:row rendered="#{!riskListBean.isMedError}">
                            <p:column style="text-align: right;">ชื่อยาที่ถูก :</p:column>
                            <p:column style="text-align: left;">
                                <h:outputText value="#{riskListBean.selectedRisk.drugItemsTrue.name}"/>
                            </p:column>
                        </p:row>

                        <p:row rendered="#{!riskListBean.isMedError}">
                            <p:column style="text-align: right;">ชื่อยาที่ผิด :</p:column>
                            <p:column style="text-align: left;">
                                <h:outputText value="#{riskListBean.selectedRisk.drugItemsFalse.name}"/>
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column style="text-align: right;">สาเหตุหลัก :</p:column>
                            <p:column style="text-align: left;">
                                <h:outputText value="#{riskListBean.selectedRisk.subCause.mainCause.mainCauseName}"/>
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column style="text-align: right;">สาเหตุรอง :</p:column>
                            <p:column style="text-align: left;">
                                <h:outputText value="#{riskListBean.selectedRisk.subCause.subCauseName}"/>
                            </p:column>
                        </p:row>
                    </p:panelGrid>

                    <p:panelGrid rendered="#{riskListBean.canManage()}" style="text-align: left; margin-top: 5px">
                        <p:row>
                            <p:column rendered="#{riskListBean.canDelete()}">
                                <p:commandButton value="ลบข้อมูล" icon="ui-icon-trash" 
                                                 onclick="confirmation.show()" 
                                                 type="button" style="width: 150px"/>
                            </p:column>
                            <p:column rendered="#{riskListBean.canEdit()}">
                                <p:commandButton value="แก้ไขข้อมูล" icon="ui-icon-wrench" ajax="false"
                                                 onsuccess="riskDialog.hide();" style="width: 150px"
                                                 action="#{riskListBean.injectedRiskData}"/>
                            </p:column>
                            <p:column rendered="#{riskListBean.canReview()}">
                                <p:commandButton value="รับทราบ" icon="ui-icon-check" update="riskView"
                                                 onsuccess="riskDialog.hide();" style="width: 150px" 
                                                 actionListener="#{riskListBean.review}"/>
                            </p:column>
                            <p:column rendered="#{riskListBean.cancelReview()}">
                                <p:commandButton value="ยกเลิกรับทราบ" icon="ui-icon-closethick" update="riskView"
                                                 onsuccess="riskDialog.hide();" style="width: 150px" 
                                                 actionListener="#{riskListBean.unReview()}"/>
                            </p:column>
                        </p:row>
                    </p:panelGrid>
                </p:dialog>
            </h:form>

            <p:confirmDialog id="confirmDialogId" message="ยืนยันการลบข้อมูล" appendToBody="true"
                             header="ยืนยันการลบข้อมูล" severity="alert" widgetVar="confirmation">
                <h:form id="formConfirmId">
                    <p:commandButton id="confirmId" value="ยืนยัน" update=":formId:riskView"
                                     onsuccess="confirmation.hide();riskDialog.hide();"
                                     actionListener="#{riskListBean.delete}"/>
                    <p:commandButton id="decline" value="ปฎิเสธ" onclick="confirmation.hide();" type="button" />
                </h:form>
            </p:confirmDialog>
        </ui:define>
    </ui:composition>
</html>